회사에서 서비스에 적용할 APM 툴이 필요하여 여러 가지 방법을 찾아보던 중, 네이버에서 개발 중인 Pinpoint를 도입하기로 결정했다.
APM이란?
Application Performance Management
애플리케이션 성능 관리라는 뜻으로, 웹 서비스의 성능의 관리 및 향상을 도와주는 툴을 일컫는다.
Pinpoint란?
대규모 애플리케이션의 성능 및 구조를 분석하고 문제를 진단 및 처리하는 분산 시스템 추적 플랫폼으로, 네이버에서 개발 및 유지보수하고 있다.
Pinpoint의 장점
오픈 소스
Pinpoint는 오픈 소스로서, 유료 APM 솔루션들과 달리 오픈 소스 라이센스 범위 내에서 자유롭게 사용할 수 있다. 또한 네이버에서 개발 중인 툴이기 때문에 한국어 문서도 찾아볼 수 있다.
간편한 설치
설치 및 적용이 간편하고, UI도 직관적이다.
Pinpoint의 구조
Pinpoint의 구조는 다음과 같다.
Pinpoint는 Hbase를 매트릭 저장소로 사용한다.
Agent가 Application의 데이터를 수집하여 Collector에 전송하면, Collector가 해당 데이터를 Hbase에 적재하고, Web UI에서 Hbase의 데이터를 읽어 화면에 출력하는 구조이다.
Agent(App) -> Collector -> Hbase -> Web의 방식인 것이다.
더 자세하게 알아보고 싶다면 네이버 개발 블로그에 잘 정리되어 있으니, 참고하면 되겠다.
Pinpoint 적용
설치 환경
CentOS 7.6
Open JDK 1.8
Hbase 2.2.7
Pinpoint 2.3.0
1. Hbase 설치
먼저 저장소인 Hbase부터 설치해야 한다.
wget https://mirror.navercorp.com/apache/hbase/2.2.7/hbase-2.2.7-bin.tar.gz
네이버에서 제공하는 Apache Mirror에서 다운로드하면 된다.
Hbase는 Java 기반이기 때문에, JDK의 경로를 등록해줘야 한다.
vi /conf/hbase-env.sh
Java가 설치된 경로로 잡아주면 된다.
./bin/start-hbase.sh
Hbase를 시작한 후, Pinpoint에 사용되는 테이블 생성 Hbase Script를 실행한다.
./bin/hbase shell hbase-create.hbase
2. Pinpoint 설치
Pinpoint의 설치 방법에는 빌드 결과를 바로 다운로드하는 방법이 있고, 수동으로 직접 하나하나 세팅하는 방법이 있다.
본 포스팅에서는 빌드 결과를 바로 다운로드해 빠르게 적용한다.
우선 Github에서 Pinpoint의 최신 릴리즈를 다운로드 받는다.
여기서는 Agent, Web, Collector만 사용한다.
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-collector-boot-2.3.0.jar
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-web-boot-2.3.0.jar
Collector, Web을 localhost에 붙여 실행시킨다.
localhost:8080에서 빈 화면이 나온다면 성공이다.
3. 실행
java -jar -javaagent:(PINPOINT Root)/pinpoint-bootstrap-2.3.0.jar -Dpinpoint.agentId=(Agent Id) -Dpinpoint.applicationName=(Application Name) -Dpinpoint.config=(pinpoint-root.config Root) (JAR NAME).jar
실행할 어플리케이션에 -javaagent로 Pinpoint 설정을 붙여 실행한다.
agentId는 해당 Agent의 구분 ID, applicationName은 WebUI에 표시될 애플리케이션의 이름, config는 설정 파일의 위치이다.
다음과 같이 나온다면 성공이다.
이후엔 추가해야 할 어플리케이션이 있을 때마다 Agent를 붙여 실행하면 된다.
동일 서버가 아닌 외부 서버를 이용해야 할 때는 pinpoint-root.config를 꼭 수정해줘야 한다.
localhost를 원하는 IP로 변경해주면 된다.
방화벽이 있을 경우에는 9991~9993번 포트를 열어주면 된다.